/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.tesis2.pucp.Envio.Controlador;

import com.tesis2.pucp.Envio.DAO.ClienteDAO;
import com.tesis2.pucp.Envio.DAO.PedidoDAO;
import com.tesis2.pucp.Envio.DAO.ProductoDAO;
import com.tesis2.pucp.Envio.Vista.PedidoGUI;
import com.tesis2.pucp.Modelo.TesisCliente;
import com.tesis2.pucp.Modelo.TesisPedido;
import com.tesis2.pucp.Modelo.TesisProducto;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import org.openstreetmap.gui.jmapviewer.DemoPedido;
/**
 *
 * @author jorge
 */
public class PedidoControlador {
    private PedidoDAO m;
    private PedidoGUI PedidoView;
    private TesisPedido pedido;
    private ArrayList<TesisProducto> listaProductosAux;
    private ArrayList<TesisProducto> listaProductos;
    private ArrayList<Integer> listaStock;
    private ArrayList<TesisCliente> listaClientes;
    private BuscarPedidoControlador buscarPedidoControlador;
    private final static int ESTADO_ACTIVO=1;

    public PedidoControlador(PedidoDAO dao, PedidoGUI view, BuscarPedidoControlador buc, TesisPedido pedido, ArrayList<TesisProducto> listaProd, ArrayList<Integer> listaS){
        m = dao;
        PedidoView = view;
        buscarPedidoControlador = buc;
        this.pedido=pedido;
        if (listaProd == null){
            this.listaProductos = new ArrayList<>();
            this.listaStock = new ArrayList<>();
        }else{
            this.listaProductos = listaProd;
            this.listaStock = listaS;
        }
        
        PedidoView.setFormPedido(this.pedido, this.listaProductos, this.listaStock);
        
        ProductoDAO pdao = new ProductoDAO();
        this.listaProductosAux = pdao.listarProductos();
        PedidoView.llenaComboProductos(listaProductosAux);
        
        ClienteDAO cdao = new ClienteDAO();
        this.listaClientes = cdao.listarClientes();
        PedidoView.llenaComboCliente(listaClientes);
        
        PedidoView.addCancelarListener(new cancelarListener());        
        PedidoView.addLimpiarListener(new limpiarListener());              
        PedidoView.addGuardarListener(new guardarClienteListener());
        PedidoView.addAgregarProductoListener(new agregarProductoListener());
        PedidoView.addObtenerListener(new obtenerListener());
        
    }
    
    
        
    class guardarClienteListener implements ActionListener{

        @Override
        public void actionPerformed(ActionEvent e) {
            TesisPedido a = new TesisPedido();
            a.setLatitud(Double.valueOf(PedidoView.getLatitud()));
            a.setLongitud(Double.valueOf(PedidoView.getLongitud()));
            a.setDescripcion(PedidoView.getDescripcion());
            a.setTesisCliente(listaClientes.get(PedidoView.getCliente()));
            m.guardarPedido(a, listaProductos, listaStock);
            if (pedido!=null) {PedidoView.mostrarAviso("Se modificó el producto con éxito");}
            else { PedidoView.mostrarAviso("Se registró el producto con éxito");}
            buscarPedidoControlador.listarResultados();            
            PedidoView.dispose();            
        }
    }
    
    class cancelarListener implements ActionListener{
        @Override
        public void actionPerformed(ActionEvent e) {
            PedidoView.dispose();
        }        
    }    
           
    
    class limpiarListener implements ActionListener{
        @Override
        public void actionPerformed(ActionEvent e) {
            PedidoView.LimpiarDatos();
        }        
    }   
    
    class agregarProductoListener implements ActionListener{
        @Override
        public void actionPerformed(ActionEvent e) {
            
            listaProductos.add(listaProductosAux.get(PedidoView.getProductos()));
            listaStock.add(Integer.valueOf(PedidoView.getStock()));
            PedidoView.llenaGrilla(listaProductos, listaStock);
        }        
    }
    
    class obtenerListener implements ActionListener{
        @Override
        public void actionPerformed(ActionEvent e) {
            DemoPedido demito = new DemoPedido();
            demito.setVistaPedido(PedidoView);
            demito.setVisible(true);
            PedidoView.dispose();
        }        
    }
}
